As the number of computing devices increase across society, electronic data management has become increasingly challenging. Modern devices create and use ever increasing amounts of electronic data ranging from digital photos and videos, to large data sets related to any number of topics including energy exploration, human resources, seismic activity, and gene research. This explosion in digital data has naturally led to ever increasingly large amounts of data that must be stored. Correspondingly, the data storage field is under constant pressure to increase size, performance, accessibility, reliability, security, and efficiency of data storage systems.
In recent years, disk access speed has become one of the major bottlenecks that greatly affect performance of many of today's input/output (I/O) intensive applications. More specifically, the applications that require a high volume of I/O throughput have been slowed down by disk drives that have lagged behind CPU performance, leading to higher latencies, decrease in response times and I/O bottlenecks. The use of a disk cache is one way of improving performance of storage devices when disk drive access speed poses a concern as the information from the disk cache can be made more readily available to the outside application due to their higher speed access as compared to a typical storage device.
In addition to using a disk cache, management of the storage space in the storage devices is yet another method that may be used to improve storage device performance. In particular, efficient management of the allocated and free space in storage devices is one specific area that is considered important to achieving the desired improvement. One technique that is currently being used to increase file system access and thus improve storage device performance involves the use of space maps to keep track of both allocated and free space. In contrast to widely used bitmap techniques, which require long random seeks on a disk to locate free space, space maps provide a very compact way of presenting the allocated and free space information of the file system. The reduction in the seek time afforded by the space maps leads to faster file system operations and in turn an increase in file system access speed.
Although a file system keeps track of allocated and free space, typically it has no control over the memory blocks that are being freed. Generally, numerous discontiguous blocks of memory may be freed at any given time. The random location of blocks that are being freed, however, may make subsequent reallocation of the free space inefficient, especially when large blocks of data need to be written to the storage device or when a storage device requires that large segments of memory be available before they are reallocated. One method that is currently used to accommodate large blocks of data or to meet the storage device requirements is to have the storage device move data around and compact it before new data is written to the storage device. This approach, however, is inefficient and can decrease performance of the storage devices. Thus, with these issues in mind, among others, there is a need for a system that can aggregate information on contiguous blocks of free space and provide this information to the storage device in order to make reallocation more efficient and thereby increase file system access speed, among other advantages.